<?php
require_once CAMINHO_SERVIDOR.'conexao.php';

class Login {

    // DEFININDO VARIÁVEIS
    private $SenhaUsuario, $tabela, $campoLogin, $campoSenha, $campoId;
    public $LoginUsuario, $msgErro;
    private $con;

        public function getCon() {
        return $this->con;
    }

    public function setCon($con) {
        $this->con = $con;
    }

    public function fecharConexao() {
        desconectar(self::getCon());
    }

    function executaQuery($query) {
        return mysql_query($query, self::getCon());
    }

    function executaQueryAll($query) {
        $posts = array();
        $result = mysql_query($query, self::getCon());

        if (mysql_num_rows($result)) {
            while ($post = mysql_fetch_assoc($result)) {
                $posts[] = $post;
            }
        }

        return $posts;
    }

    function executaQueryRow($query) {
        $result = mysql_query($query, self::getCon());
        return mysql_fetch_assoc($result);
    }

    // DEFINIR AS INFORMAÇÕES DA CLASSE
    function Login($tabela = "tb_login", $campoLogin = "login", $campoSenha = "senha", $msgErro = "Login ou senha inválido", $campoId = "id_login") {
        session_start();
        self::setCon(conectar());
        mysql_query('SET CHARACTER SET utf8');
        $this->tabela = $tabela;
        $this->campoLogin = $campoLogin;
        $this->campoSenha = $campoSenha;
        $this->campoId = $campoId;
        $this->msgErro = $msgErro;
    }

    // FAZENDO LOGIN DO USUARIO
    function logar($login, $senha, $redireciona = false) {
        //funcoes::debuga( md5($senha));
        // Informações do formulário
        $this->SenhaUsuario = md5($senha);
        $this->LoginUsuario = funcoes::anti_sql_injection($login);
        // Verifica se o usuário existe
        $campos = self::executaQueryRow("SELECT " . $this->campoId . "," . $this->campoLogin . "," . $this->campoSenha . " FROM " . $this->tabela . " WHERE " . $this->campoLogin . " = '" . $this->LoginUsuario . "' AND " . $this->campoSenha . " = '" . $this->SenhaUsuario . "' LIMIT 0,1");
        // Se o usuário existir
        if (!empty($campos)) {
            // Coloca as informações em sessões
            
            $_SESSION['usuario'] = $login;
            $_SESSION['id_usuario'] = $campos[$this->campoId];
            // Se for necessário redirecionar
            if ($redireciona) {
                header("Location: " . $redireciona . "");
            }
            // Se o usuário não existir
        } else {
            return $this->msgErro;
        }
    }

    // VERIFICA SE O USUÁRIO ESTÁ LOGADO
    function verificar($redireciona = false) {
        
        // Se estiver logado
        if (isset($_SESSION['usuario']) and isset($_SESSION['id_usuario'])):
            global $LoginUsuario;
            $LoginUsuario = $_SESSION["usuario"];
            return true;
        // Se não estiver logado
        else:
            // Se for necessário redirecionar
            if ($redireciona):
                header("Location: " . $redireciona . "");
            endif;
            return false;
            exit;
        endif;
    }

    // LOGOUT
    function logout($redireciona = false) {
        
        // Limpa a Sessão
        $_SESSION = array();
        // Destroi a Sessão
        session_destroy();
        // Modifica o ID da Sessão
        session_regenerate_id();
        // Se for necessário redirecionar
        if ($redireciona):
            header("Location: " . $redireciona . "");
            exit;
        endif;
    }

}

?>